package com.smart.community.commons.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.smart.community.commons.dto.ApiLogDTO;
import com.smart.community.commons.dto.SystemLogQueryDTO;
import com.smart.community.commons.entity.SystemLog;

/**
 * 系统日志Mapper接口
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 */
@Mapper
public interface SystemLogMapper extends BaseMapper<SystemLog> {
    
    /**
     * 插入API日志
     * 
     * @param logDTO API日志DTO
     * @return 插入结果
     */
    int insert(ApiLogDTO logDTO);
    
    /**
     * 分页查询系统日志
     * 
     * @param page 分页对象
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    IPage<SystemLog> selectSystemLogPage(IPage<SystemLog> page, @Param("query") SystemLogQueryDTO queryDTO);
    
    /**
     * 根据物业公司ID分页查询系统日志
     * 
     * @param page 分页对象
     * @param propertyCompanyId 物业公司ID
     * @return 分页结果
     */
    IPage<SystemLog> selectSystemLogPageByPropertyCompanyId(IPage<SystemLog> page, @Param("propertyCompanyId") Long propertyCompanyId);
    
    /**
     * 根据多个物业公司ID分页查询系统日志
     * 
     * @param page 分页对象
     * @param propertyCompanyIds 物业公司ID列表
     * @return 分页结果
     */
    IPage<SystemLog> selectSystemLogPageByPropertyCompanyIds(IPage<SystemLog> page, @Param("propertyCompanyIds") List<Long> propertyCompanyIds);
    
    /**
     * 根据用户ID查询系统日志
     * 
     * @param userId 用户ID
     * @return 系统日志列表
     */
    List<SystemLog> selectByUserId(@Param("userId") Long userId);
    
    /**
     * 根据物业公司ID查询系统日志
     * 
     * @param propertyCompanyId 物业公司ID
     * @return 系统日志列表
     */
    List<SystemLog> selectByPropertyCompanyId(@Param("propertyCompanyId") Long propertyCompanyId);
}